perm filename GRIND[C,JRA] blob
sn#015003 filedate 1972-12-01 generic text, type T, neo UTF8
(DEFPROP PRINT CPRINT EXPR)
(DEFPROP PRIN1 !$CPRIN1 EXPR)
(STOP)
(PROG (IBASE C ↑W)
(SETQ IBASE 10)
(ERRSET (REMGRIND) NIL)
(SETQ C (LIST NIL))
(PRINC (QUOTE LOADING/ GRIND/ 9))
X (COND ((EQ C (SETQ G (READ C))) (RETURN (QUOTE *))) (T (EVAL G) (GO X))))
(AND (NOT (GET (QUOTE *REARRAY) (QUOTE LSUBR)))
(GET (QUOTE RE*ARRAY) (QUOTE FSUBR))
(DEFUN *REARRAY FEXPR (L) (APPLY (QUOTE RE*ARRAY)
(CONS (EVAL (CAR L)) (CDR L))))
(DEFUN *ARRAY FEXPR (L) (APPLY (QUOTE ARRAY)
(CONS (EVAL (CAR L)) (CDR L)))))
(DEFUN REMGRIND FEXPR (L) (PROG NIL
(MAPC (QUOTE (LAMBDA (X)
(REMPROP X (QUOTE EXPR))))
(QUOTE (TURPRI SPRINT MAXPAN PANMAX)))
(MAPC (QUOTE (LAMBDA (X)
(REMPROP X (QUOTE FEXPR))))
(QUOTE (GRINDEF GRIND1 GRIND0 REMGRIND)))
(ERRSET (*REARRAY (QUOTE / )) NIL)
(ERRSET (*REARRAY (QUOTE / )) NIL)
(SSTATUS GCTWA)))
(DEFUN SPEW (X) (TERPRI) (SPRINT X LINEL 0))
(DEFUN GRINDEF
FEXPR
(L)
((LAMBDA (H)
(MAPC
(QUOTE
(LAMBDA (C)
(COND
((ATOM C)
(MAPC
(QUOTE
(LAMBDA (F)
(COND ((SETQ L (GET C F))
(TURPRI)
(TURPRI)
(COND ((AND (NOT (ATOM L))
(MEMQ F (QUOTE (EXPR FEXPR MACRO))))
(SPRINT (CONS (QUOTE DEFUN)
(CONS C
(COND ((EQ F (QUOTE EXPR))
(CDR L))
((CONS F (CDR L))))))
LINEL
0))
((SPRINT (LIST (QUOTE DEFPROP) C L F)
LINEL
0)))))))
H))
((SETQ H (APPEND C H))))))
L))
(QUOTE (EXPR FEXPR VALUE MACRO)))
(ASCII 0))
(DEFUN TURPRI EXPR NIL (TERPRI) (SETQ GRINDLINCT
(REMAINDER (PLUS 73 GRINDLINCT) 74)))
(DEFUN SPRINT
(L N M)
(PROG (F G H)
(AND (LESSP N CHRCT)
(PRINC (/ (*DIF (LSH (*DIF LINEL N) -3)
(LSH (*DIF LINEL CHRCT) -3))))
(PRINC (/ (*DIF CHRCT N))))
(AND (OR (LESSP (PLUS M -1 (FLATSIZE L)) CHRCT) (ATOM L))
(RETURN (PRIN1 L)))
(SETQ F (EQ (CAR L) (QUOTE PROG)))
(PRINC (QUOTE /())
(ERRSET
(AND (NOT (ATOM (CDR L)))
(OR F (SETQ N (MAXPAN (CDR L)
(DIFFERENCE CHRCT (FLATSIZE (CAR L)) 1))))
(OR (ATOM (CAR L)) (NOT (LESSP (MAXPAN (CDR L) CHRCT) N)))
(PROG NIL
(ERRSET (SETQ G
(LESSP (MAXPAN (LAST L)
(*DIF (PLUS (FLATSIZE (LAST L))
CHRCT)
(FLATSIZE L)))
N)))
A (PRIN1 (CAR L))
(PRINC (QUOTE / ))
(AND (CDR (SETQ L (CDR L))) G (GO A)))))
(SETQ N CHRCT)
(SETQ H (MEMQ (CAR L) (QUOTE (DEFPROP DEFUN LAMBDA LABEL))))
B (SPRINT (CAR L)
(COND ((SETQ G (AND F (CAR L) (ATOM (CAR L)))) (PLUS N 5)) (N))
(COND ((NULL (SETQ L (CDR L))) (ADD1 M))
((ATOM L) (PLUS 4 M (FLATSIZE L)))
(0)))
(COND ((ATOM L) (AND L (PRINC (QUOTE / /./ )) (PRIN1 L))
(RETURN (PRINC (QUOTE /))))))
(COND (H (SETQ H NIL) (PRINC (QUOTE / )))
((OR (LESSP CHRCT N) (AND G (ATOM (CAR L)))) (TURPRI)))
(GO B)))
(DEFUN MAXPAN
(L N)
(PROG (G)
(SETQ G 0)
A (SETQ G (PLUS G (PANMAX (CAR L)
N
(COND ((NULL (SETQ L (CDR L))) (ADD1 M))
((ATOM L) (PLUS M 4 (FLATSIZE L)))
(0)))))
(AND (ATOM L) (RETURN G))
(GO A)))
(DEFUN PANMAX (L N M) (COND ((LESSP (PLUS M -1 (FLATSIZE L)) N) 1)
((OR (LESSP N 3) (ATOM L)) (ERR (QUOTE (50))))
((AND (NOT (ATOM (CDR L)))
(ATOM (CAR L))
(SETQ N (DIFFERENCE N 1 (FLATSIZE (CAR L))))
(SETQ L (CDR L))
NIL))
((MAXPAN L (SUB1 N)))))
(DEFUN GRIND0
FEXPR
(L)
(PROG (G ↑Q ↑R ↑W)
(APPLY (QUOTE UREAD) L)
(UWRITE)
(SETQ ↑Q (SETQ ↑R (SETQ ↑W (SETQ GRINDLINCT 73))))
A (COND
((LESSP
(TURPRI)
(CAR (ERRSET (REMAINDER (PANMAX (COND ((EQ (SETQ G (READ L)) L)
(RETURN (CONS (QUOTE UFILE)
L)))
(G))
CHRCT
0)
74))))
(SETQ GRINDLINCT 73)
(TYO 14)
(SETQ CHRCT LINEL))
((TURPRI)))
(SPRINT G CHRCT 0)
(GO A)))
(DEFUN GRIND1 FEXPR (L) ((LAMBDA (LINEL) (APPLY (QUOTE GRIND0) L)) 120))
(SETQ GRINDLINCT 10)
((LAMBDA (G F H) (APPLY G (QUOTE (/ 20))) (APPLY G (QUOTE (/ 10))))
(QUOTE (LAMBDA (M N) (*ARRAY M T N) (H)))
(QUOTE (LAMBDA (N) (COND ((NOT (LESSP N 0))
(APPEND (GET M (QUOTE PNAME))
(CADDR (STORE (APPLY M (LIST N))
(LIST (CAR NIL)
(QUOTE PNAME)
(H)))))))))
(QUOTE (LAMBDA NIL (APPLY F (LIST (SUB1 N))))))
(RUN)
β